"""
关于排序的常见问答

1. 排序算法有哪些常见类型？
   - 冒泡排序（Bubble Sort）
   - 选择排序（Selection Sort）
   - 插入排序（Insertion Sort）
   - 归并排序（Merge Sort）
   - 快速排序（Quick Sort）
   - 堆排序（Heap Sort）
   - 希尔排序（Shell Sort）
   - 计数排序（Counting Sort）
   - 桶排序（Bucket Sort）
   - 基数排序（Radix Sort）

2. 排序算法的时间复杂度如何？
   - 冒泡、选择、插入排序：O(n^2)
   - 归并、快速、堆排序：O(n log n)
   - 计数、桶、基数排序：O(n)（需要特定条件）

3. 排序算法的空间复杂度如何？
   - 冒泡、选择、插入排序：O(1)
   - 归并排序：O(n)
   - 快速排序：O(log n)（递归栈空间）
   - 计数、桶、基数排序：O(n+k)（k为数据范围）

4. 哪些排序是稳定的？哪些是不稳定的？
   - 稳定排序：冒泡、插入、归并、计数、桶、基数排序
   - 不稳定排序：选择、快速、堆排序、希尔排序

5. 排序算法如何选择？
   - 数据量小且基本有序：插入排序
   - 数据量大且无特殊要求：快速排序
   - 需要稳定性：归并排序
   - 数据范围小且为整数：计数/桶/基数排序

6. Python内置的排序方法是什么？
   - list.sort() 和 sorted()，底层实现为Timsort（归并+插入排序的优化），时间复杂度O(n log n)，稳定排序。

7. 快速排序的基本思想是什么？
   - 选一个基准元素，将数组分为两部分，比基准小的放左边，比基准大的放右边，然后递归排序两部分。

8. 归并排序的基本思想是什么？
   - 分治思想，将数组不断二分，分别排序后合并两个有序数组。

9. 堆排序的基本思想是什么？
   - 利用堆这种数据结构，每次取出堆顶元素（最大或最小），重建堆，直到排序完成。

10. 排序算法的应用场景举例？
    - 需要稳定排序时用归并/插入/冒泡
    - 需要原地排序且不关心稳定性时用快速/堆/选择
    - 数据范围小且为整数时用计数/桶/基数排序

"""
